import request from '@/utils/request'

/**
 * 菜单管理API接口
 */

/**
 * 分页查询菜单列表
 * @param {Object} params 查询参数
 * @returns {Promise} 请求结果
 */
export function getMenuPage(params) {
  return request({
    url: '/menus/page',
    method: 'get',
    params
  })
}

/**
 * 获取所有启用的菜单
 * @returns {Promise} 请求结果
 */
export function getEnabledMenus() {
  return request({
    url: '/menus/enabled',
    method: 'get'
  })
}

/**
 * 获取菜单树
 * @returns {Promise} 请求结果
 */
export function getMenuTree() {
  return request({
    url: '/menus/tree',
    method: 'get'
  })
}

/**
 * 根据父级菜单ID查询子菜单
 * @param {Number} parentId 父级菜单ID
 * @returns {Promise} 请求结果
 */
export function getMenusByParentId(parentId) {
  return request({
    url: `/menus/children/${parentId}`,
    method: 'get'
  })
}

/**
 * 根据菜单类型查询菜单
 * @param {Number} type 菜单类型
 * @returns {Promise} 请求结果
 */
export function getMenusByType(type) {
  return request({
    url: `/menus/type/${type}`,
    method: 'get'
  })
}

/**
 * 根据ID获取菜单详情
 * @param {Number} id 菜单ID
 * @returns {Promise} 请求结果
 */
export function getMenuById(id) {
  return request({
    url: `/menus/${id}`,
    method: 'get'
  })
}

/**
 * 创建菜单
 * @param {Object} data 菜单数据
 * @returns {Promise} 请求结果
 */
export function createMenu(data) {
  return request({
    url: '/menus',
    method: 'post',
    data
  })
}

/**
 * 更新菜单
 * @param {Number} id 菜单ID
 * @param {Object} data 菜单数据
 * @returns {Promise} 请求结果
 */
export function updateMenu(id, data) {
  return request({
    url: `/menus/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除菜单
 * @param {Number} id 菜单ID
 * @returns {Promise} 请求结果
 */
export function deleteMenu(id) {
  return request({
    url: `/menus/${id}`,
    method: 'delete'
  })
}

/**
 * 切换菜单状态
 * @param {Number} id 菜单ID
 * @param {Number} status 状态
 * @returns {Promise} 请求结果
 */
export function toggleMenuStatus(id, status) {
  return request({
    url: `/menus/${id}/status`,
    method: 'put',
    params: { status }
  })
}